import { defineConfig } from 'eslint-define-config'
import globals from 'globals'
import antfu from '@antfu/eslint-config'
import pluginVue from 'eslint-plugin-vue'
import eslintPluginTurf from 'eslint-plugin-turf' // 可选：Turf.js 专用规则

export default defineConfig([
  // 基础配置
  ...antfu({
    vue: true,          // 启用 Vue 支持
    typescript: true,   // 启用 TypeScript 支持
    ignores: [
      '**/dist/**',
      '**/node_modules/**',
      '**/coverage/**',
      '**/.turbo/**'
    ]
  }),

  // 自定义规则覆盖
  {
    files: ['**/*.{js,ts,vue}'],
    languageOptions: {
      globals: {
        ...globals.browser,
        ...globals.node,
        ol: 'readonly',      // OpenLayers 全局变量
        turf: 'readonly',    // Turf.js 全局变量
        proj4: 'readonly'    // proj4 全局变量
      },
      parserOptions: {
        ecmaVersion: 'latest',
        sourceType: 'module'
      }
    },
    rules: {
      // WebGIS 相关规则
      'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'warn',
      'vue/multi-word-component-names': 'off', // 允许单文件组件名

      // 空间分析代码风格
      'turf/no-mutable-params': 'error' // 如果使用 eslint-plugin-turf
    }
  },

  // Vue 文件特殊配置
  {
    files: ['**/*.vue'],
    ...pluginVue.configs['flat/recommended'],
    rules: {
      'vue/component-tags-order': ['error', {
        order: ['script', 'template', 'style']
      }]
    }
  },

  // TypeScript 文件特殊配置
  {
    files: ['**/*.ts'],
    rules: {
      '@typescript-eslint/no-explicit-any': 'off' // WebGIS 中有时需要 any 类型
    }
  }
])
